//package top.taooc.config;
//
//import cn.hutool.json.JSONUtil;
//import io.etcd.jetcd.ByteSequence;
//import io.etcd.jetcd.Client;
//import io.etcd.jetcd.KV;
//import io.etcd.jetcd.Lease;
//import io.etcd.jetcd.options.PutOption;
//import top.taooc.model.ServiceMetaInfo;
//import top.taooc.registry.Registry;
//
//import java.nio.charset.StandardCharsets;
//import java.time.Duration;
//import java.util.List;
//
///**
// * @author songtao@guishangyi.cn
// * @date 2024年07月31日 16:21:57
// * @packageName top.taooc.config
// * @className EtcdRegistry
// * @Menu
// */
//public class EtcdRegistry implements Registry {
//
//    private Client client;
//
//    private KV kvClient;
//
//    /**
//     * 根节点
//     */
//    private static final String ETCD_ROOT_PATH = "/rpc/";
//
//    /**
//     * 初始化
//     *
//     * @param registryConfig
//     */
//    @Override
//    public void init(RegistryConfig registryConfig) {
//        client = Client.builder().endpoints(registryConfig.getAddress()).connectTimeout(Duration.ofMillis(registryConfig.getTimeout())).build();
//        kvClient = client.getKVClient();
//    }
//
//    /**
//     * 注册服务（服务端）
//     *
//     * @param serviceMetaInfo
//     * @throws Exception
//     */
//    @Override
//    public void register(ServiceMetaInfo serviceMetaInfo) throws Exception {
//        //创建Lease和kv客户端
//        Lease leaseClient = client.getLeaseClient();
//        //创建一个30秒的租约
//        long leaseId = leaseClient.grant(30).get().getID();
//        //设置要存储的键值对
//        String registerKey = ETCD_ROOT_PATH + serviceMetaInfo.getServiceNodeKey();
//        ByteSequence key = ByteSequence.from(registerKey, StandardCharsets.UTF_8);
//        ByteSequence value = ByteSequence.from(JSONUtil.toJsonStr(serviceMetaInfo), StandardCharsets.UTF_8);
//        //将键值对与租约关联起来，并设置过期时间
//        PutOption putOption = PutOption.builder().withLeaseId(leaseId).build();
//        kvClient.put(key,value,putOption).get();
//    }
//
//    /**
//     * 注销服务（服务端）
//     *
//     * @param serviceMetaInfo
//     */
//    @Override
//    public void unRegister(ServiceMetaInfo serviceMetaInfo) {
//
//    }
//
//    /**
//     * 服务发现（获取某服务的所有节点，消费端）
//     *
//     * @param serviceKey
//     * @return
//     */
//    @Override
//    public List<ServiceMetaInfo> serviceDiscovery(String serviceKey) {
//        return List.of();
//    }
//
//    /**
//     * 服务销毁
//     */
//    @Override
//    public void destory() {
//
//    }
//}
